package org.nf.mvc.util;

import io.github.classgraph.ClassGraph;
import io.github.classgraph.ClassInfoList;
import io.github.classgraph.ScanResult;

/**
 * @Author : LLH
 * @create 2021/5/24
 * 扫描的工具类，用于扫描指定包下面的Class信息
 */
public class ScanUtil {

    /**
     * 全局扫描
     * @return
     */
    public static ClassInfoList scan(){
        return doScan("");
    }

    /**
     * 扫描指定包名下的类
     * @param packageName
     * @return
     */
    public static ClassInfoList scan(String packageName){
        return doScan(packageName);
    }

    /**
     * 核心扫描
     * @param packageName
     * @return    ClassInfoList是一个List集合，里面存放了所有Class的信息
     */
    private static ClassInfoList doScan(String packageName){
        //创建ClassGraph对象
        ClassGraph cg = new ClassGraph();

        //扫描指定的包，""表示扫描所有包
        ScanResult result = cg.acceptPackages(packageName).scan();

        //返回集合
        return result.getAllClasses();
    }
}
